package com.example.ywr.common;

import lombok.Data;
import org.springframework.data.domain.Page;

import java.io.Serializable;
import java.util.List;

/**
 * 分页查询结果
 */
@Data
public class PageResult<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 当前页码
     */
    private Integer pageNum;

    /**
     * 每页记录数
     */
    private Integer pageSize;

    /**
     * 总记录数
     */
    private Long total;

    /**
     * 总页数
     */
    private Integer pages;

    /**
     * 数据列表
     */
    private List<T> list;

    /**
     * 将Spring Data的Page转为自定义的PageResult
     *
     * @param page Spring Data的Page对象
     * @param <T>  泛型
     * @return PageResult对象
     */
    public static <T> PageResult<T> fromPage(Page<T> page) {
        PageResult<T> result = new PageResult<>();
        result.setPageNum(page.getNumber() + 1); // Spring Data的页码从0开始
        result.setPageSize(page.getSize());
        result.setTotal(page.getTotalElements());
        result.setPages(page.getTotalPages());
        result.setList(page.getContent());
        return result;
    }
}